The prior art discloses a number of data processing systems which employ disk storage devices for storing data employed by the system. These devices store various types of information such as the operating system under which the micro-processor operates, different application programs that are run by the system and information that is created and manipulated by the various application programs.
Disk storage devices have generally comprised one or more magnetic disks having a plurality of concentric tracks which are divided into sectors or blocks. Each surface of a disk generally stores information and disk drives are configured with multiple disks and multiple magnetic heads to permit one access mechanism to position the heads to one of several concentric recording tracks. Most current disk drives employ an addressing convention that specifies a physical storage location by the number of the cylinder (CC), the number of the magnetic head (H) and the sector number (S).
The number of the cylinder is also the number of the tracks where multiple heads are employed and the head number is equivalent to the disk surface in a multi-disk configuration. The "CCHS" addressing format is employed independent of the capacity of the disk file since it is capable of addressing any configuration that may exist.
The capacity of disk storage devices measured in terms of bytes is dependent on the recording technology employed, the track density, disk size and the number of disks. As a result disk drives are manufactured in various capacities, data rates and access times.
Most data processing systems generally employ a number of disk drives for storing data. Since each device is a failure independent unit it is sometimes advantageous to spread the data to be stored over a number of smaller capacity drives rather than having one large capacity device.
The former configuration permits a copy of critical data to be stored in a separate device which can be accessed in the primary copy is not available.
The task of allocating disk storage space in the system is generally the responsibility of the operating system. Unix.sup.* type operating system such as the IBM AIX.sup.# operating system which is employed on the IBM PC RT engineering workstation have a highly developed system for organizing files. FNT *Trademark of ATT FNT #Trademark of IBM
In Unix parlance a "file" is the basic structure that is used for storing information that is employed in the system. For example a file may be a directory which is merely a listing of other files in the system, or a data file.
Each file must have a unique identifier. A user assigns a name to a file and the operating system assigns an inode number and a table is kept to translate names to numbers. A file name is merely a sequence of characters and is generally limited to approximately 14 characters. Files may be organized by assigning related files to the same directory, which characteristically is another file with a name and which merely lists the name and inode number of the files stored in that directory.
The AIX operating system also organizes file directories in groups which are given a file name since they are also considered to be a file. The resultant organization is known as a hierarchical file system which resembles an inverted tree structure with the root directory at the top and a multi-level branching structure descending from the root. Both directories and non-directory type files can be stored at each level. Files that are listed by name in a directory at one level are located at the next lower level. A file is identified in the hierarchical file system by specifying its name preceded by the description of the path that is traced from the root level to the named file. The path descriptor is in terms of the directory names through which the path descends. If the current directory is the root directory the full path is expressed. If the current directory is some intermediate directory, the path description may be shortened to define the shorter path.
The various files of the operating system are themselves organized in a hierarchical file system. For example a number of subdirectories depend from the root directory and list files that are related. The subdirectories have names such as / which stores the AIX kernel files; /bin which store the AIX utilities, /tmp which stores temporary files; and /u which store the users files.
As indicated previously the task of assigning AIX files to specific addressable storage units on the disk drive is the responsibility of the operating system. Most operating systems include a command which functions to install one or more file systems onto the disk drive. An "install" command stores the files in contiguous blocks on the disk drive which are in a pre-designated area on the address range of the disk file. Prior to actually assigning a file to disk blocks, a determination is made to divide the available disk storage space of the storage subsystem into a number of different areas so each area can store files having the same general function. These assigned areas are often referred to as virtual disks. The term mini-disk is used in the AIX system and the term A-disk in IBM's VM system.
Several advantages are obtained from the standpoint of management and control when files having the same characteristics are stored in one defined area of the disk drive. For example, a certain group of files may not be changed at all over a certain period time while others may change quite rapidly so that they would be backed up at different times. It is also simpler for the administrator to assign these files to a virtual disk in accordance with their function and manage all the files in one group the same.
The above are just two examples of many where the provision of virtual disks simplifies the administration and control by the operating system of the storage of files in the storage subsystem.
Since the IBM PC RT is capable of running both the AIX operating system and the PC-DOS operating system, the storage of different operating systems on different virtual disks made the management and control the system much easier, since each virtual machine effectively had what appeared to be its own storage subsystem involving a minidisk.
The size of the virtual disk that is created in the AIX operating system cannot be dynamically changed once it has been established. While any size can be selected up to the actual capacity of the disk device it can only be changed by direction of the system administrator and certain AIX utilities. For some minidisks, selecting the initial capacity is a relatively straight forward operation in that the size of all the files to be placed on that minidisk are known and except for program updates that occur infrequently, the capacity remains relatively constant over a reasonable period of time. At the other extreme, an area of the disk drive i.e., a minidisk must be reserved for paging space and the amount of paging space that will be required will vary considerably over a reasonable period of time.
Similarly, the space required for user's data files can vary considerably over a short period of time. Selecting a capacity for the virtual disk to accommodate the worst case condition generally results in unused space for much of the time. Assigning a capacity less than that required for the worst case condition may result in inconvenient reallocation of the disk space.
Virtual disks with predetermined capacities that are not dynamically variable to meet current needs always result in less than optimum usage of disk storage space and require more active involvement of the system administrator to insure optimum system performance.
Another problem with virtual disks that have a fixed capacity occurs when the total storage capacity of the system requires more than one disk device. Since virtual disks are created by assigning contiguous disk blocks, which is the basic unit of addressability in the storage subsystem, it is not practical to create a virtual disk that extends across two physical devices. Virtual disks which are on a single disk device therefore often result in wasted free space that is not large enough to support an individual virtual disk. The space is therefore sometimes added to the last virtual disk created merely because it would otherwise be wasted.
The present invention is directed to a method of allocating space on the disk drives of a data processing system which avoids the above described problems encountered with virtual disks whose storage capacities cannot be varied dynamically as the capacity requirements change.